|
Introduction - The main window - The preview window - The edit window - The properties window Credits - What's new - Remarks - Contact |
The editor supports full editing of all of the game's courses, including demo courses and unused test courses which are only present in the Japanese version. In addition, background and music selections can be changed in order to fully customize courses. Individual courses can be saved to standalone files for easy distribution, and sample levels are included to demonstrate some of the editor's capabilities.
The editor supports US, European, and Japanese ROMs, both with or without copier headers. Special Tee Shot support is currently planned for future versions, but is not yet implemented due to numerous differences between the two games in how level and graphics data are organized.
Source code is available on GitHub, and is distributed under the MIT license.
(top)
The main window is where all level editing takes place. When you load a ROM, level data is shown from a top-down perspective. Levels are composed of tiles, each one having a terrain type and an optional obstacle or enemy, as well as optional "bumpers" to the north, east, south, and west.
Each tile displays its current height in the corner. Hovering over a tile with the mouse will also display its current terrain and obstacle values (in hexadecimal), which are also displayed in more detail on the window's status bar.
Clicking and dragging will select a tile or range of tiles, which you can then edit by double-clicking, selecting the "Edit Tiles" option on the Edit menu or toolbar, or pressing the "E" key. This will bring up the edit window, allowing you to modify the properties of the selected tiles. To deselect tiles, right-click anywhere within the level view.
To change levels, click the "course select" option on the Level menu or the toolbar. Use the "previous/next course/level" options to move back/forward one course or hole at a time, or hold Ctrl and use the left/right arrow keys (holding Shift at the same time will move by entire courses).
(top)
The preview window appears alongside the main menu and shows what the current level will look like in game. This window displays the isometric tile maps which the editor generates and the game displays, so what you see here is exactly what you get in game.
By default, the view in the preview window will automatically center on any tile that you move the mouse over in the main window, allowing you to view what you're editing without having to manually scroll the window. You can enable or disable this feature by selecting "Center Preview" in the Level menu or on the toolbar. Selecting "Show Preview" will redisplay the window if it is ever closed.
Note that the preview window does not account for palette changes, due to using pre-made graphics rather than loading them from the ROM (mostly due to laziness). This may change in future versions.
(top)
This is the window which appears when you double-click a selection of tiles or select the "Edit Tiles" menu option. From here, you can edit the terrain and obstacle values of a tile or tiles, increase/decrease tiles' height, add side bumpers, and select whether to display the tile's graphics on layer 1 or layer 2.
Note that most enemies can only be placed on slopes facing east or south. Placing enemies on other slopes will cause them to be invisible in game and can cause the game to lock up.
A good example of the difference between inner and outer slopes can be seen on 1P Course 2-1 in the original game; the "outer" slopes are used for the corners of the level, while the "inner" slopes are used in the sunken area in the center.
If you are editing a range of tiles with multiple terrain types, the dropdown will default to a value of "(multiple)". This option causes each tile's existing terrain value to remain the same.
If you are editing tiles which use one of the sloped terrain types, the height value must be at least 1. This is because all of the slope types start at the given height value and slope down to 1 unit lower.
If you are editing a range of tiles with multiple height values, the slider will be labeled "Raise/Lower", and will allow you to raise or lower the selection by a relative amount.
A few things you should keep in mind when placing obstacles:
If you are editing a range of tiles with multiple obstacle types, the dropdown will default to a value of "(multiple)", just like the terrain dropdown.
These checkboxes only cover bumpers which span the very edges of tiles. For horizontal, vertical, and diagonal bumpers which pass through the centers of tiles, use the obstacle dropdown.
Also note that, due to the way the editor generates tile maps, there will be some situations in which the appearance of bumpers will not be 100% consistent with the way they appear in the original game. This is a purely cosmetic issue and is typically not very noticeable.
If you are editing a range of tiles with multiple bumper on/off values in any direction, the respective checkbox will have a value of "partially checked". This value will cause all selected tiles to retain their existing settings for that individual bumper.
![]() 1P course 7-1 using only layer 1 |
![]() 1P course 7-1 using layers 1 and 2 |
Note that Kirby is always drawn in front of layer 2, except when above empty space (i.e. if Kirby is immediately capable of going out of bounds), where Kirby can be between layers 1 and 2, or behind both layers.
Another word of warning: when putting tiles on layer 2, any non-sprite obstacles will be drawn on layer 1, with the priority bit set so that they still appear on top of the terrain. Putting obstacles on layer 1 like this can cause visual issues with any layer 1 terrain which is close by on-screen, so use caution when putting obstacles on layer 2 tiles if they are also close to layer 1 tiles.
In rare cases, you might place combinations of terrain which don't occur in the original levels, and thus don't have appropriate graphics available. If this happens, you can place one or more of the offending tiles on layer 2, causing them to be drawn separately instead of "connected" to adjacent terrain. One use for this is the ability to place diagonal slopes next to walls:
![]() Diagonal slopes on layer 1 |
![]() Diagonal slopes on layer 2 |
If you are editing a range of tiles which use both layers, the "Keep" radio button will be selected by default. As with the other editing controls, this option causes the selected tiles' layer settings to be left alone.
(top)
The properties window allows you to customize some details of both the current course and the specific hole you are editing.
Note that, as the text in the screenshot says, changing a course's background always effects multiple courses. For example, if you change 1P Course 1's background, the same change will be applied to 1P Extra 1, 2P Course 1, and 2P Extra 1.
Palettes, unlike backgrounds, only affect the current course. The editor allows you to choose palettes for both the ground and the water hazards. Normally, water hazards use the same-numbered palette as the ground, but different combinations are also possible.
Kirby's Dream Course normally uses the same music tracks for several holes in a row, but that kind of consistency isn't actually a requirement - you can just as easily use 8 different music tracks in one course if you want to.
Note that, because the Japanese version's intro sequence was removed from the US/European versions, its music track is only usable in the Japanese version.
The level length and width boxes allow you to resize the level (length = north to south, width = east to west). Due to memory restrictions, the two-dimensional area of a level cannot be greater than 2,048; all of the original levels are much smaller in area than this, so this limitation is not likely to be much of a problem.
Note that the isometric tilemaps are also limited in size; their size is determined by the length, width, and height of the level, as well as how much (or how little) of the level is empty space. Once again, the limit here is much higher than what any of the original levels reach, so this should only present a problem if you are making unusually large levels that come close to the length/width limits. In the event that this actually happens, you will be presented with a warning when saving your ROM, and part of your level will not be visible in game.
(top)
(top)
(top)
At some point while messing around with Kirby Bowl, I stumbled upon the game's decompression routine, rewrote it in the form of a small tool called "exhal", and began exploring the game's data. Most of it quickly became clear, and I set out to write a document on the level format used by the game.
Around that time, I semi-publically announced my intention to write an editor, and by chance I found video footage on Nico Nico Douga of a Japanese hacker's custom Kirby Bowl levels, and was later given a link to their editor, "KBE". While the original editor was a bit lacking in the interface department, this obscure tool and the hacked Kirby Bowl videos proved that there was an audience for this sort of thing, and I resolved to make a more accessible alternative.
A couple of months later, delayed by my acquiring a full-time job, I had a rudimentary level editor put together. It still needed to generate the pre-made isometric tile maps that the game actually displayed, so I set out opening up dozens of save states and punching in what ended up as just a little bit under 3,500 lines of raw tile data, eight tiles per line. The lack of a clear-cut pattern in the way the game's graphics were organized, along with some annoying properties of the visual perspective, made this a monstrously tedious affair.
Nevertheless, it was eventually done, and after patching up some quirks in the tile map generation code, the editor was finally almost ready for prime time. About two months of testing and user feedback later (and several more months of laziness), and version 1.00 is finally here.
At this point, I'm probably going to take a break to work on something else (or nothing at all), but comments, etc., will always be welcome.
Special Tee Shot support is still in the cards, but it'll be a lot more tedious tile-wrangling before that happens "for real".
Oh, and as the old text readme mentioned, this is my first real GUI application ever. I'm sorry that it doesn't look very good. (I'm also sorry that the download for the Windows build is so much larger than before, as I updated to Qt 5 but didn't ever have time to build smaller Qt DLLs with fewer dependencies. At least you can delete the Qt 4 DLLs from previous versions.)
(top)
Email:
d@revenant1.net
IRC:
"devin" on irc.badnik.net
"Revenant" on irc.oftc.net
"Revenant`" on irc.synirc.net and irc.dal.net
Forums:
http://jul.rustedlogic.net/profile.php?id=504
http://www.romhacking.net/forum/index.php?action=profile;u=10455
(top)
copyright 2013-2015 Devin "Revenant" Acker - "life is but a dream"